package com.yantong.service;

import com.yantong.utils.Tree;
import com.yantong.pojo.Permission;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Set;

/**
 * 目录结构，权限
 * @author kanghaixin
 */
@Service
public interface MenuService {
	/**
	 * 获取菜单树形结构，，有root
	 * @param userId
	 * @return
	 */
	Tree<Permission> getSysMenuTree(Long userId);

	/**
	 * 获取菜单树形结构，，无根节点
	 * @param userId
	 * @return
     */
	List<Tree<Permission>> listMenuTree(Long userId);

	/**
	 * @param flag
	 * 获取权限的树形结构
	 * @return
     */
	Tree<Permission> getPermTree(String flag);

	/**
	 * @param flag
	 * all 权限菜单资源
	 * @return
     */
	List<Permission> listMenus(String flag);
	/**
	 * 删除权限
	 * @param permId
	 * @return
     */
	int removePerm(Long permId);
	/**
	 * 保存权限信息
	 * @param menu
	 * @return
     */
	int savePerm(Permission menu);

	/**
	 * 更新权限信息
	 * @param menu
     * @return
     */
	int updatePerm(Permission menu);

	/**
	 * id获取权限名称
	 * @param permId
	 * @return
     */
	Permission getPermById(Long permId);

	/**
	 * 获取用户权限
	 * @param userId 用户ID
     * @return
     */
	Set<String> getPermsByUserId(Long userId);

	/**
	 * 获取角色下权限的状态树
	 * @param roleId
	 * @param flag
	 * @return
     */
	Tree<Permission> getTreeByRoleId(Long roleId, String flag);
}
